package com.zmn.plat.services.interfaces.product;

import java.util.List;

import com.zmn.plat.model.entity.category.ServCategAndCategTwoQuery;
import com.zmn.plat.model.entity.product.ServProductPicture;
import com.zmn.plat.model.entity.product.ServProductPictureQuery;
import com.zmn.plat.model.vo.product.ShowProductIdVO;

/**
 * 产品图片Service
 *
 * @author tanghongjun
 * @since 18/10/15 11:09
 */
public interface ServProductPictureService {
    /**
     * 描述: ServProductPicture key 查询数据
     *
     * @param productPictureId
     * @return: ServProductPicture
     * @auther: tanghongjun
     * @since: 2018/10/15 16:41
     */
    ServProductPicture findByKey(Integer productPictureId);

    /**
     * 描述: 根据产品ID获取产品图片信息
     *
     * @param productId
     *            产品ID
     * @return ServProductPicture 产品图片信息
     * @auther tanghongjun
     * @since 2019/8/26 10:27
     */
    ServProductPicture findByProductId(Integer productId);

    /**
     * 描述:查询最大key
     *
     * @return: productPictureId
     * @auther: tanghongjun
     * @since: 2018/10/15 16:41
     */
    Integer findKeyForMax();

    /**
     * 描述: 根据产品ID集合获取产品图片信息
     *
     * @param productIds
     *            产品ID
     * @return ServProductPicture 产品图片信息
     * @auther tanghongjun
     * @since 2019/8/26 10:27
     */
    List<ServProductPicture> listByProductIds(List<Integer> productIds);

    /**
     * 描述: 根据查询条件分页查询
     *
     * @param query
     * @return: List<ServProductPicture>
     * @auther: tanghongjun
     * @since: 2018/10/15 16:41
     */
    List<ServProductPicture> listPageByQuery(ServProductPictureQuery query);

    /**
     * 描述: 根据查询条件查询所有数据
     *
     * @param query
     * @return: List<ServProductPicture>
     * @auther: tanghongjun
     * @since: 2018/10/15 16:41
     */
    List<ServProductPicture> listByQuery(ServProductPictureQuery query);

    /**
     * 描述: ServProductPicture 数据
     *
     * @return: List<ServProductPicture>
     * @auther: tanghongjun
     * @since: 2018/10/15 16:41
     */
    List<ServProductPicture> listAll();

    /**
     * 描述: 图片配置数据
     *
     * @return: List<ServProductPicture>
     * @auther: tanghongjun
     * @since: 2018/10/15 16:41
     */
    List<ShowProductIdVO> listConfigPictureProductIdByCategTwoQuery(List<ServCategAndCategTwoQuery> categIds);
    /**
     * 描述: 根据查询条件统计满足条件的数据条数
     *
     * @param query
     * @return: Integer
     * @auther: tanghongjun
     * @since: 2018/10/15 16:41
     */
    Integer countByQuery(ServProductPictureQuery query);

    /**
     * 描述: 根据主键修改数据
     *
     * @param servProductPicture
     * @return: 执行结果码
     * @auther: tanghongjun
     * @since: 2018/10/15 16:41
     */
    Integer updateByKey(ServProductPicture servProductPicture);

    /**
     * 描述: 根据产品id修改数据
     *
     * @param updateProductPictureProductIds
     * @return: 执行结果码
     * @auther: tanbiao
     * @since: 2018/10/15 16:41
     */
    Integer updateByProductIds(List<Integer> updateProductPictureProductIds, ServProductPicture updatePicture);

    /**
     * 描述: 批量插入
     *
     * @param addPictureList
     * @return: 执行结果码
     * @auther: tanbiao
     * @since: 2018/10/15 16:41
     */
    Integer insertBatch(List<ServProductPicture> addPictureList);


    /**
     * 描述: 新增数据
     *
     * @param servProductPicture
     * @return: 执行结果码
     * @auther: tanghongjun
     * @since: 2018/10/15 16:41
     */
    Integer insert(ServProductPicture servProductPicture);

    /**
     * 描述: 根据主键删除数据
     *
     * @param productPictureId
     * @return: 执行结果码
     * @auther: tanghongjun
     * @since: 2018/10/15 16:41
     */
    Integer deleteByKey(Integer productPictureId);

}